package com.ruoyi.project.module.parameter.service;

import com.ruoyi.common.support.Convert;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.project.module.parameter.domain.Parameter;
import com.ruoyi.project.module.parameter.mapper.ParameterMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 请求参数 服务层实现
 * 
 * @author ruoyi
 * @date 2018-10-08
 */
@Service
public class ParameterServiceImpl implements IParameterService 
{
	@Resource
	private ParameterMapper parameterMapper;

	/**
     * 查询请求参数信息
     * 
     * @param apiParameterId 请求参数ID
     * @return 请求参数信息
     */
    @Override
	public Parameter selectParameterById(Integer apiParameterId)
	{
	    return parameterMapper.selectParameterById(apiParameterId);
	}
	
	/**
     * 查询请求参数列表
     * 
     * @param parameter 请求参数信息
     * @return 请求参数集合
     */
	@Override
	public List<Parameter> selectParameterList(Parameter parameter)
	{
	    return parameterMapper.selectParameterList(parameter);
	}
	
    /**
     * 新增请求参数
     * 
     * @param parameter 请求参数信息
     * @return 结果
     */
	@Override
	public int insertParameter(Parameter parameter)
	{
		String userName = ShiroUtils.getUser().getLoginName();
		parameter.setCreateBy(userName);
		parameter.setCreateTime(new Date());
		parameter.setUpdateBy(userName);
		parameter.setUpdateTime(new Date());
	    return parameterMapper.insertParameter(parameter);
	}
	
	/**
     * 修改请求参数
     * 
     * @param parameter 请求参数信息
     * @return 结果
     */
	@Override
	public int updateParameter(Parameter parameter)
	{
		String userName = ShiroUtils.getUser().getLoginName();
		parameter.setCreateBy(null);
		parameter.setCreateTime(null);
		parameter.setUpdateBy(userName);
		parameter.setUpdateTime(new Date());
	    return parameterMapper.updateParameter(parameter);
	}

	/**
     * 删除请求参数对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteParameterByIds(String ids)
	{
		return parameterMapper.deleteParameterByIds(Convert.toStrArray(ids));
	}

	@Override
	public int copyParameterWithProjectId(Long sourceApiProjectnameId, Long targetApiProjectnameId) {
		Parameter parameterSeach = new Parameter();
		parameterSeach.setApiProjectnameId(sourceApiProjectnameId.intValue());
		List<Parameter> parameterList = selectParameterList(parameterSeach);
		for (Parameter parameterTemp:parameterList) {
			Parameter parameter = new Parameter();
			BeanUtils.copyProperties(parameterTemp,parameter);
			parameter.setApiParameterId(null);
			parameter.setApiProjectnameId(targetApiProjectnameId.intValue());
			insertParameter(parameter);
		}
		return 1;
	}
}
